package com.shujia.wyh.day07.ketang;
/*
    形式参数
        基本类型
        引用类型:
            数组：当数组作为方法的形式参数的时候，传入的是数组的地址值
            类：当看到类作为方法参数的数据类型的时候，将来调用时需要传入的时该类或者该类的子类对象
            接口：当看到接口作为方法的形参数据类型的时候，将来调用时，需要传入的是实现该接口具体的类的对象
            抽象类：当看到一个抽象类作为方法的形式参数的时候，将来调用时需要传入的是该类的具体的子类对象
    返回值类型
        基本类型
        引用类型
            数组：当数组作为方法的形式参数的时候，传入的是数组的地址值
            类：当你看到一个类作为方法的返回值类型的时候，方法中需要返回该类或者该类的子类对象
            接口：当你看一个接口作为方法的返回值类型的时候，方法中需要返回实现该接口的具体的类的对象
            抽象类：当你看到一个抽象类作为方法的返回值类型的时候，方法中需要返回继承该抽象类的具体子类对象

 */

abstract class Demo6{
    public abstract void study();
}

class Demo6Zi extends Demo6{

    @Override
    public void study() {
        System.out.println("好好学习，天天向上");
    }
}

class Student6{
    //当你看到一个抽象类作为方法的返回值类型的时候，方法中需要返回继承该抽象类的具体子类对象
    public Demo6 show(){
        return new Demo6Zi();
    }
}
public class StudentDemo6 {
    public static void main(String[] args) {
//        Student6 student6 = new Student6();
//        Demo6 demo6 = new Student6().show(); //Demo6 demo6 = new Demo6Zi();
        new Student6().show().study();  //今后看到调用方法后还能继续调用方法的形式，我们称之为链式调用 后期我们会学习scala语言
    }
}
